package com.feilx.changgou.canal.listener;


import com.alibaba.otter.canal.protocol.CanalEntry;
import com.xpand.starter.canal.annotation.*;

@CanalEventListener  // 启动监听
public class CanalDataEventListener {

    /**
    *@Description   新增监听
    *@Param
      * @param entryType  当前操作的类型
       * @param rowData   行数据
    *@Return void
    *@Author feilx
    */
    @InsertListenPoint
    public void onEventInster(CanalEntry.EntryType entryType,CanalEntry.RowData rowData){
         rowData.getAfterColumnsList().stream().forEach(column -> {

             System.out.println(column.getName()+"----"+column.getValue());
         });
    }

    /*
    *  更新监听
    *
    * */
    @UpdateListenPoint
    public void onEventUpdate(CanalEntry.EntryType entryType,CanalEntry.RowData rowData){
        rowData.getAfterColumnsList().stream().forEach(column -> {

            System.out.println(column.getName()+"----"+column.getValue());
        });
    }

    /*
    *   删除监听
    * */
    @DeleteListenPoint
    public void onEventDelete(CanalEntry.EntryType entryType,CanalEntry.RowData rowData){
        rowData.getBeforeColumnsList().stream().forEach(column -> {
            System.out.println(column.getName()+"----"+column.getValue());
        });
    }

    // 自定义监控
    @ListenPoint(
            // 监听事件类型
            eventType = {CanalEntry.EventType.DELETE, CanalEntry.EventType.INSERT, CanalEntry.EventType.UPDATE},
            schema = {"changgou_content"}, // 监听数据库名
            table = {"tb_content"},  // 监听数据库中表名
            destination = "example"  // 指定实例的地址  就是配置canal 中的实例名
    )
    public void onEeventCustom(CanalEntry.EntryType entryType,CanalEntry.RowData rowData){
        rowData.getAfterColumnsList().stream().forEach(column -> {

            System.out.println(column.getName()+"----"+column.getValue());
        });
    }
}
